
#if !defined (mMatrix4x4_H)
#define mMatrix4x4_H

#include <math.h>

#include "mVector4.h"

class mMatrix4x4
{
public:
	float m00, m01, m02, m03,
		m10, m11, m12, m13,
		m20, m21, m22, m23,
		m30, m31, m32, m33;

	mMatrix4x4(void);
	mMatrix4x4(const mMatrix4x4 &);
	mMatrix4x4(float, float, float, float,
		float, float, float, float,
		float, float, float, float,
		float, float, float, float);
	mMatrix4x4(float[16]);
	mMatrix4x4(float[4][4]);
	~mMatrix4x4(void);

	mMatrix4x4 &operator =(const mMatrix4x4 &);
	bool operator ==(const mMatrix4x4 &) const;
	bool operator !=(const mMatrix4x4 &) const;
	mMatrix4x4 operator -(void) const;
	mMatrix4x4 operator +(const mMatrix4x4 &) const;
	mMatrix4x4 operator -(const mMatrix4x4 &) const;
	mMatrix4x4 operator *(const mMatrix4x4 &) const;
	mVector4 operator *(const mVector4 &) const;
	mMatrix4x4 operator *(float) const;
	//mMatrix4x4 operator /(float) const;
	mMatrix4x4 &operator +=(const mMatrix4x4 &);
	mMatrix4x4 &operator -=(const mMatrix4x4 &);
	mMatrix4x4 &operator *=(float);
	//mMatrix4x4 &operator /=(float);
	float &operator [](int);
	//float operator *(const mMatrix4x4 &) const;

	void Identity(void);
};

#endif